home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 November / PCWNOV08.iso / Software / Freeware / Mini Map Sidebar 0.3 / mini_map_sidebar-0.3.0-fx.xpi / chrome / content / import.js < prev    next >
Encoding:
Text File  |  2008-02-24  |  6.9 KB  |  191 lines

  1. function importMaps(extType){
  2.  
  3. const nsIFilePicker = Components.interfaces.nsIFilePicker;
  4.  
  5. var fp = Components.classes["@mozilla.org/filepicker;1"]
  6.                .createInstance(nsIFilePicker);
  7. fp.init(window, "Dialog Title", nsIFilePicker.modeOpen);
  8. fp.appendFilter(extType+" Files","*."+extType);
  9.  
  10. var rv = fp.show();
  11. if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {
  12.   var file = fp.file;
  13.   // Get the path as string. Note that you usually won't 
  14.   // need to work with the string paths.
  15.   var path = fp.file.path;
  16.   // work with returned nsILocalFile...
  17. }
  18.  
  19.  //|file| is nsIFile
  20.  
  21. var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
  22.                           .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  23. converter.charset = /* The character encoding you want, using UTF-8 here */ "UTF-8";
  24.  
  25. var data = "";
  26. var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"]
  27.                         .createInstance(Components.interfaces.nsIFileInputStream);
  28. var sstream = Components.classes["@mozilla.org/scriptableinputstream;1"]
  29.                         .createInstance(Components.interfaces.nsIScriptableInputStream);
  30. fstream.init(file, -1, 0, 0);
  31. sstream.init(fstream); 
  32.  
  33. var str = sstream.read(4096);
  34. while (str.length > 0) {
  35.   data += str;
  36.   str = sstream.read(4096);
  37. }
  38.  
  39. var text = converter.ConvertToUnicode(data);
  40.  
  41. sstream.close();
  42. fstream.close();
  43.  
  44. if(extType == 'kml')
  45. importMapsKML(text);
  46. if(extType == 'csv')
  47. importMapsCsv(text);
  48. if(extType == 'gpx')
  49. importMapsGpx(ext);
  50. if(extType == 'minimap')
  51. importMapsMinimap(text);
  52. }
  53.  
  54.  
  55. function importMapsMinimap(data){
  56.     var domParser = new DOMParser();
  57.     var datadom = domParser.parseFromString(data, "text/xml");
  58.     var metas = datadom.getElementsByTagName('Placemark');
  59.       if (metas) {
  60.         for (i=0; i < metas.length; i++) {
  61.         var minimap = {};
  62.         minimap.title = metas[i].getElementsByTagName('title')[0].textContent;
  63.         minimap.description = metas[i].getElementsByTagName('description')[0].textContent;
  64.         minimap.address = metas[i].getElementsByTagName('address')[0].textContent;
  65.         minimap.sourceurl = metas[i].getElementsByTagName('url')[0].textContent;
  66.         minimap.accuracy = metas[i].getElementsByTagName('accuracy')[0].textContent;
  67.         minimap.altd = metas[i].getElementsByTagName('altd')[0].textContent;
  68.         minimap.lat = metas[i].getElementsByTagName('lat')[0].textContent;
  69.         minimap.lng = metas[i].getElementsByTagName('lng')[0].textContent;
  70.         minimap.country = metas[i].getElementsByTagName('country')[0].textContent;
  71.         minimap.state = metas[i].getElementsByTagName('state')[0].textContent;
  72.         minimap.county = metas[i].getElementsByTagName('county')[0].textContent;
  73.         minimap.locality = metas[i].getElementsByTagName('locality')[0].textContent;
  74.         minimap.street = metas[i].getElementsByTagName('street')[0].textContent;
  75.         minimap.postal = metas[i].getElementsByTagName('postal')[0].textContent;
  76.         add_objectIm(minimap);
  77.         rebuildMap( )
  78.         }
  79.     }
  80. }
  81.  
  82. function importMapsKML(data){
  83.     var domParser = new DOMParser();
  84.     var datadom = domParser.parseFromString(data, "text/xml");
  85.     try{
  86.     var metas = datadom.getElementsByTagName('Url');
  87.     var url = metas[0].getElementsByTagName('href')[0].textContent;
  88.     url = url.replace(/&/gi,'&')
  89.     req = new XMLHttpRequest ();   
  90.     req.onreadystatechange = getKmlResponse; 
  91.     req.open("GET",url,true);
  92.     req.send(null);
  93.     }
  94.     catch(e){
  95.     var metas = datadom.getElementsByTagName('Placemark');
  96.       if (metas) {
  97.         for (i=0; i < metas.length; i++) {
  98.         var kml = {};
  99.         try{kml.title = metas[i].getElementsByTagName('name')[0].textContent;}catch(e){kml.title = '';}
  100.         try{kml.description = metas[i].getElementsByTagName('description')[0].textContent;}catch(e){kml.description = '';}
  101.         try{kml.address = metas[i].getElementsByTagName('address')[0].textContent;}catch(e){kml.address = '';}
  102.         var coord = metas[i].getElementsByTagName('coordinates')[0].textContent;
  103.         kml.lat = coord.split(',')[1];
  104.         kml.lng = coord.split(',')[0];
  105.         kml.sourceurl = '';
  106.         kml.accuracy = '8';
  107.         add_objectIm(kml);
  108.         rebuildMap( )
  109.         }
  110.     }
  111.     }
  112. }
  113.  
  114. function getKmlResponse(){
  115.     if (req.readyState == 4) { 
  116.     if (req.status == 200) 
  117.     {
  118.     var result = req.responseXML;
  119.     var metas = result.getElementsByTagName('Placemark');
  120.       if (metas) {
  121.         for (i=0; i < metas.length; i++) {
  122.         var kml = {};
  123.         try{kml.title = metas[i].getElementsByTagName('name')[0].textContent;}catch(e){kml.title='';}
  124.         try{kml.description = metas[i].getElementsByTagName('description')[0].textContent;}catch(e){kml.description = '';}
  125.         var coord = metas[i].getElementsByTagName('coordinates')[0].textContent;
  126.         kml.lat = coord.split(',')[1];
  127.         kml.lng = coord.split(',')[0];
  128.         try{kml.address = metas[i].getElementsByTagName('address')[0].textContent;}catch(e){kml.address = kml.lat+','+kml.lng;}
  129.         kml.sourceurl = '';
  130.         kml.accuracy = '8';
  131.         add_objectIm(kml);
  132.         rebuildMap( )
  133.         }
  134.     }
  135.     }
  136.     }
  137. }
  138.  
  139. function importMapsGpx(data){
  140.     var domParser = new DOMParser();
  141.     var datadom = domParser.parseFromString(data, "text/xml");
  142.  
  143.     var metas = datadom.getElementsByTagName('wpt');
  144.       if (metas) {
  145.         for (i=0; i < metas.length; i++) {
  146.         var gpx = {};
  147.         gpx.title = metas[i].getElementsByTagName('name')[0].textContent;
  148.         gpx.altd = metas[i].getElementsByTagName('ele')[0].textContent;
  149.         gpx.lat = metas[i].getAttribute('lat');
  150.         gpx.lng = metas[i].getAttribute('lon');
  151.         gpx.description = '';
  152.         gpx.address = gpx.lat+','+gpx.lng;
  153.         gpx.sourceurl = '';
  154.         gpx.accuracy = '8';
  155.         add_object(gpx);
  156.         rebuildMap( )
  157.  
  158.         }
  159.     }
  160. }
  161.  
  162. function add_objectIm(data){
  163.     try{
  164.         var ds = flock_mapsGetDS();
  165.         var container = ds.getNode("urn:flock:maps:addresses");
  166.         var date=new Date();
  167.         var id='obj_' + date.getTime();
  168.         var root = ds.getNode("urn:flock:maps:addresses");
  169.         var node = ds.getNode("urn:flock:maps:addresses:" + id)
  170.         node.addTargetOnce(_mns('id'), "urn:flock:maps:addresses:" + id );
  171.         node.addTargetOnce(_mns('sourceurl'), data.sourceurl + "" );
  172.         node.addTargetOnce(_mns('location'), data.address + "");
  173.         node.addTargetOnce(_mns('indexlabel'), data.indexlabel +"");
  174.         node.addTargetOnce(_mns('lat'), data.lat + "" );
  175.         node.addTargetOnce(_mns('lng'), data.lng + "" );
  176.         node.addTargetOnce(_mns('title'), data.title + "" );
  177.         node.addTargetOnce(_mns('description'), (data.description || "") );
  178.         node.addTargetOnce(_mns('accuracy'), data.accuracy + "" );
  179.         node.addTargetOnce(_mns('country'), (data.country || "") );
  180.         node.addTargetOnce(_mns('state'), (data.state || "") );
  181.         node.addTargetOnce(_mns('county'), (data.county || "") );
  182.         node.addTargetOnce(_mns('locality'), (data.locality || "") );
  183.         node.addTargetOnce(_mns('postal'), (data.postal || "") );
  184.         node.addTargetOnce(_mns('street'), (data.street || "") );
  185.         node.addTargetOnce(_mns('altd'), (data.altd || "") );
  186.         root.addChild(node);
  187.         ds.save();
  188.     }
  189.     catch(e){
  190.     }
  191. }